package com.pac.questionnaire.service.impl;

import java.util.List;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import com.common.tools.StringTools;
import com.common.util.ErrorNumber;
import com.common.util.LogicException;
import com.pac.questionnaire.bean.QuestionnaireDiagnosisAutoBean;
import com.pac.questionnaire.dao.QuestionnaireDiagnosisAutoDao;
import com.pac.questionnaire.service.QuestionnaireDiagnosisAutoService;

/**
 * 问卷自动回答Service实现
 * 
 * @author lujun.chen
 * @version [版本号, 2015年3月11日]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
@Service(value = "questionnaireDiagnosisAutoService")
public class QuestionnaireDiagnosisAutoServiceImpl implements
		QuestionnaireDiagnosisAutoService {

	private static Logger logger = Logger
			.getLogger(QuestionnaireDiagnosisAutoService.class);

	@Autowired
	private QuestionnaireDiagnosisAutoDao questionnaireDiagnosisAutoDao;

	@Override
	@Transactional(propagation = Propagation.REQUIRED)
	public String addQuestionnaireDiagnosisAuto(
			QuestionnaireDiagnosisAutoBean questionnaireDiagnosisAutoBean) {

		if (null == questionnaireDiagnosisAutoBean) {
			logger.error("添加问卷自动回答信息出错，参数为空");
			throw new LogicException(ErrorNumber.PARAM_IS_NULL, "参数为空");
		}

		if (StringTools.isNull(questionnaireDiagnosisAutoBean
				.getQuestionnaireId())) {
			logger.error("添加问卷自动回答记录出错，问卷ID为空");
			throw new LogicException(ErrorNumber.PARAM_IS_NULL, "问卷ID为空");
		}

		if (StringTools.isNull(questionnaireDiagnosisAutoBean.getAnswer())) {
			logger.error("添加问卷自动回答记录信息出错，问题回答为空");
			throw new LogicException(ErrorNumber.PARAM_IS_NULL, "问题回答为空");
		}

		if (StringTools.isNull(questionnaireDiagnosisAutoBean.getDiagnosis())) {
			logger.error("添加问题自动回答记录信息出错，自动回答为空");
			throw new LogicException(ErrorNumber.PARAM_IS_NULL, "自动回答为空");
		}

		return questionnaireDiagnosisAutoDao
				.addQuestionnaireDiagnosisAuto(questionnaireDiagnosisAutoBean);
	}

	@Override
	@Transactional(propagation = Propagation.REQUIRED)
	public boolean updateQuestionnaireDiagnosisAuto(
			QuestionnaireDiagnosisAutoBean questionnaireDiagnosisAutoBean) {
		if (null == questionnaireDiagnosisAutoDao) {
			logger.error("更新问卷自动回答信息出错，参数为空");
			throw new LogicException(ErrorNumber.PARAM_IS_NULL, "参数为空");
		}

		if (StringTools.isNull(questionnaireDiagnosisAutoBean.getId())) {
			logger.error("更新问卷自动回答信息出错，ID为空");
			throw new LogicException(ErrorNumber.PARAM_IS_NULL, "ID为空");
		}

		return questionnaireDiagnosisAutoDao
				.updateQuestionnaireDiagnosisAuto(questionnaireDiagnosisAutoBean);
	}

	@Override
	@Transactional(propagation = Propagation.REQUIRED)
	public boolean delQuestionnaireDiagnosisAuto(
			QuestionnaireDiagnosisAutoBean questionnaireDiagnosisAutoBean) {
		if (null == questionnaireDiagnosisAutoBean) {
			logger.error("删除问卷自动回答信息出错，参数为空");
			throw new LogicException(ErrorNumber.PARAM_IS_NULL, "参数为空");
		}

		if (StringTools.isNull(questionnaireDiagnosisAutoBean.getId())) {
			logger.error("删除问题自动回答信息出错，ID为空");
			throw new LogicException(ErrorNumber.PARAM_IS_NULL, "ID为空");
		}

		return questionnaireDiagnosisAutoDao
				.delQuestionnaireDiagnosisAuto(questionnaireDiagnosisAutoBean);
	}

	@Override
	public List<QuestionnaireDiagnosisAutoBean> queryQuestionnaireDiagnosisAuto(
			QuestionnaireDiagnosisAutoBean questionnaireDiagnosisAutoBean) {
		return questionnaireDiagnosisAutoDao
				.queryQuestionnaireDiagnosisAuto(questionnaireDiagnosisAutoBean);
	}

	@Override
	public QuestionnaireDiagnosisAutoBean findQuestionnaireDiagnosisAuto(
			QuestionnaireDiagnosisAutoBean questionnaireDiagnosisAutoBean) {
		if (null == questionnaireDiagnosisAutoBean) {
			return null;
		}

		List<QuestionnaireDiagnosisAutoBean> diagnosisAuto = questionnaireDiagnosisAutoDao
				.queryQuestionnaireDiagnosisAuto(questionnaireDiagnosisAutoBean);

		if (null != diagnosisAuto && diagnosisAuto.size() > 0) {
			return diagnosisAuto.get(0);
		}

		return null;
	}

	@Override
	public QuestionnaireDiagnosisAutoBean findQuestionnaireDiagnosisAutoByAnser(
			String answer) {
		if (StringTools.isNull(answer)) {
			return null;
		}

		QuestionnaireDiagnosisAutoBean questionnaireDiagnosisAutoBean = new QuestionnaireDiagnosisAutoBean();
		questionnaireDiagnosisAutoBean.setAnswer(answer);

		List<QuestionnaireDiagnosisAutoBean> diagnosisAuto = questionnaireDiagnosisAutoDao
				.queryQuestionnaireDiagnosisAuto(questionnaireDiagnosisAutoBean);

		if (null != diagnosisAuto && diagnosisAuto.size() > 0) {
			return diagnosisAuto.get(0);
		}

		return null;
	}

}
